package de.fhluebeck.oop.gps.cmd;

/**
 * 
 * Abstrakte Klasse Option
 * Stellt die zentrale process Methode zur Verfügung und ruft 
 * weitere Optionen in der Chain auf
 *
 * @author Ogün Bilge, Leif Hitzschke
 * @version 1.00, 13.11.2009
 * 
 */

abstract class Option {

	protected final void process(String key, String value) {
		if (isApplicable(key)) {
			execute(value);
		} else {
			Option successor = getSuccessor();
			if(successor != null) {
				successor.process(key, value);
			}
		}
	}

	abstract boolean isApplicable(String key);

	abstract Option getSuccessor();

	abstract void execute(String value);
}
